package br.com.sgpv2.service.evento;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.evento.Evento;
import br.com.sgpv2.entity.movimentacao.Movimentacao;
import br.com.sgpv2.hibernate.evento.EventoRepository;
/**
 * Classe de serviço de Evento.
 */
@Service(value = "eventoService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class EventoServiceImpl implements EventoService {
	
	private EventoRepository eventoRepository;

	@Override
	public void salvar(Evento evento) {
		eventoRepository.salvar(evento);

	}

	@Override
	public void alterar(Evento evento) {
		eventoRepository.alterar(evento);

	}

	@Override
	public List<Evento> listar() {
		return eventoRepository.listarOrder("descricao");
	}

	@Override
	public void excluir(Evento evento) {
		eventoRepository.excluir(evento);

	}

	@Override
	public Evento buscar(Integer pk) throws NegocioExeception {
		return eventoRepository.buscar(pk);
	}

	@Override
	public boolean validarExclusao(String idEvento) {
		List<Movimentacao> contratos = eventoRepository.listarMovimentacoesPorEvento(Integer.parseInt(idEvento));
		if(contratos.size() > 0){
			return false;
		}else{
			return true;
		}
	}
	
	public List<Evento> consultarPorDescricao(String descricao) {
		if (StringUtils.isNotBlank(descricao)) {
			return eventoRepository.consultarPorDescricao(descricao);
		} else {
			return listar();
		}
	}
	
	public EventoRepository getEventoRepository() {
		return eventoRepository;
	}

	@Autowired
	public void setEventoRepository(EventoRepository eventoRepository) {
		this.eventoRepository = eventoRepository;
	}

}
